export function params(){
    const F01=(v,n)=>{
        v = v&0b0011111111111111
        let T=(v*500.000/16384)-273
        return T
    }
    const F02=(v,n)=>{
        v = v&0b0011111111111111
        let I = v*500.000/16384
        return I
    }
    const F03=(v,n)=>{
        v = v&0b0011111111111111
        let U = v*5000/16384
        return U
    }
    const F04=(v,n)=>{
        v = v&0b0011111111111111
        let U = v*2500/16384
        return U
    }
    const F05=(v,n)=>{
        v = v&0b0011111111111111
        let U = v*10/16384
        return U
    }
    const F06=(v,n)=>{
        v = v&0b0011111111111111
        let U = v*5/16384
        return U
    }
    const F07=(v,n)=>{
        if (((v >> 7)& 1) === 1) return '校验和错误'
        else if (((v >> 6)& 1) === 1) return '有效数据错误（仅针对数据注入的非可配参数）'
        else if (((v >> 5)& 1) === 1) return '命令类型错误'
        else if (((v >> 4)& 1) === 1) return '载荷标识错误'
        else if (((v >> 3)& 1) === 1) return '包头错误'
        else if (((v >> 2)& 1) === 1) return '字符间隔错误'
        else if (((v >> 1)& 1) === 1) return '停止位错误'
        else if (((v >> 0)& 1) === 1) return '挥发分指令接收奇偶校验错误'
        else return '无错误'
    }
    const tx = () => {
      return '0xAA'
    }
    const D01={
      0b00: '灯丝A',
      0b11: '灯丝B'
    }
    const D02={
      0b0000: '采集完成',
      0b1111: '正在采集'
    }
    const D03={
      0b0101: '自检模式',
      0b1010: '安全模式',
      0b1100: '探测模式'
    }
    const D04={
      0b0000: '测量方法1',
      0b1100: '测量方法2',
      0b0011: '测量方法3',
      0b0110: '测量方法4',
      0b1001: '测量方法5',
      0b1111: '空闲及自定义'
    }
    const D05={
      0b0000: '低频',
      0b1111: '高频'
    }
            const TD01=(v)=>{
      // d: 时区为北京时的时候， 转换最终时间 需要减去offset 方可用 toISO 方法显示为北京时 - t.getTimezoneOffset()*60e3
      // 	  // d 指定时区为utc / toiso 也是utc 也就是与开始时间处于同一时区，处理过程就不需要在考虑时区问题了
       	        let d = new Date('2020-01-01T00:00:00Z')
       	        let t = parseInt(v.toString(16).padStart(12,0).slice(0,8),16)*1000 + (v & 0xFFFF)  + d.getTime()
       	        return new Date(t).toISOString().slice(0,23).replace('T',' ')
       	                        }
    return[
//        1			包同步码		16			0xEB90
        new Params('a001', '包同步码', 16, null, null, null,null),
//2			包标识		16			0x0A0A
        new Params('a002', '包标识', 16, null, null, null,null),
//3			包序		16
        new Params('a003', '包序', 16, null, null, null,null),
//4			包长		16			0x27
        new Params('a004', '包长', 16, null, null, null,null),
//5			副导头（时间码）		48		源码
        new Params('a005', '副导头（时间码）', 48, null, v=>TD01(v), null,null),
//6			命令类型		8			0x25
        new Params('a006', '命令类型', 8, null, null, null,null),
//7			挥发分射频温度	℃	16			注1	227 -273 无 无
        new Params('a007', '挥发分射频温度', 16, '℃', v=>F01(v, 'a007'), v=>v.toFixed(3), null),
//8			挥发分当前灯丝	无	2			当前灯丝（00代表灯丝A，11代表灯丝B），	无	无	无	无
        new Params('a008', '挥发分当前灯丝', 2, null, null,v=>D01[v], null),
//9			挥发分灯丝电流	μA	14			注2	无	0	无	0
        new Params('a009', '挥发分灯丝电流', 14, 'μA', v=>F02(v, 'a009'), v=>v.toFixed(3),v=>v >= 0),
//10			挥发分高压	V	16			注3	无	0	3200	0
        new Params('a010', '挥发分高压', 16, 'V', v=>F03(v, 'a010'), v=>v.toFixed(3),v=>v <= 3200 && v >= 0),
//11			挥发分采集状态	无	4			0000b代表采集完成，1111b代表正在采集	无	无	无	无
        new Params('a011', '挥发分采集状态', 4, null, null,v=>D02[v], null),
//12			挥发分工作模式	无	4			1010为安全模式，0101为自检模式，1100为探测模式	无	无	无	无
        new Params('a012', '挥发分工作模式', 4, null, null,v=>D03[v], null),
//13			挥发分探测方法	无	4			测量方法1-5
//0000b为测量方法1
//1100b为测量方法2
//0011b为测量方法3
//0110b为测量方法4
//1001b为测量方法5
//空闲及自定义为1111b	无	无	无	无
        new Params('a013', '挥发分探测方法', 4, null, null,v=>D04[v], null),
//14			挥发分频率	无	4			0000b为低频，1111b为高频	无	无	无	无
        new Params('a014', '挥发分频率', 4, null, null,v=>D05[v], null),
//15			挥发分射频幅值1	V	16			注4	无	无	无	无
        new Params('a015', '挥发分射频幅值1', 16, 'V', v=>F04(v), v=>v.toFixed(3), null),
//16			挥发分射频幅值2	V	16			注5	无	无	无	无
        new Params('a016', '挥发分射频幅值2', 16, 'V', v=>F04(v), v=>v.toFixed(3), null),
//17			挥发分射频幅值3	V	16			注6	无	无	无	无
        new Params('a017', '挥发分射频幅值3', 16, 'V', v=>F04(v), v=>v.toFixed(3), null),
//18			挥发分射频幅值4	V	16			注7	无	无	无	无
        new Params('a018', '挥发分射频幅值4', 16, 'V', v=>F04(v), v=>v.toFixed(3), null),
//19			挥发分5V二次电源电压	V	16			注8	5.65V	4.59V	无	无
        new Params('a019', '挥发分5V二次电源电压', 16, 'V', v=>F05(v), v=>v.toFixed(3), null),
//20			挥发分3.3V二次电源电压	V	16			注9	3.63V	2.97V	无	无
        new Params('a020', '挥发分3.3V二次电源电压', 16, 'V', v=>F06(v), v=>v.toFixed(3), null),
//21			挥发分1.5V二次电源电压	V	16			注10	1.65V	1.35V	无	无
        new Params('a021', '挥发分1.5V二次电源电压', 16, 'V', v=>F06(v), v=>v.toFixed(3), null),
//22			挥发分科学数据发送计数	无	16			 注11	65535	0	无	无
        new Params('a022', '挥发分科学数据发送计数', 16, null, null, null,null),
//23			挥发分工程参数发送计数	无	16				65535	0	无	无
        new Params('a023', '挥发分工程参数发送计数', 16, null, null, null,null),
//24			挥发分指令正确接收计数	无	16				65535	0	无	无
        new Params('a024', '挥发分指令正确接收计数', 16, null, null, null,null),
//25			挥发分指令接收错误计数	无	8			 注12	255	0	无	无
        new Params('a025', '挥发分指令接收错误计数', 8, null, null, null,null),
//26			挥发分指令接收错误类型	无	8			按十六进制解析 注13	255	0	无	无
        new Params('a026', '挥发分指令接收错误类型', 8, null, v=>F07(v, 'a026'), null),
//27			挥发分备用1	无	8			填充0xAA
        new Params('a027', '挥发分备用1', 8, null, tx, null,null),
//28			挥发分备用2	无	8			填充0xAA
        new Params('a028', '挥发分备用2', 8, null, tx, null,null),
//29			校验和	无	8
        new Params('a029', '校验和', 8, null, null, null,null),




    ]


}